自动加"\0" 的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 13:42:25
char x[]="12345";

char y[]={"1","2","3","4","5"};

x组字符串大小 > y组字符串大小

原因是x组自动加了\0
y组系统未加\0

此处询问,什么时候系统会加自动加 \0 呢??

使用双引号包含的字符串,系统会自动以'\0'结尾,表示这个字符串的结束标志,使用单引号表示的只是单个的一个字符,第二句
char y[]={"1","2","3","4","5"};
这里有问题,不知道是你的笔误还是,由于用单引号才表示一个字符,不会有'\0'结尾,这里如果是双引号那么y[]就会保存每个双引号的字符串的首地址的最低一个字节(int转换为char),这是没意义的,所以我猜第二句可能是笔误,应该是下面:
char y[]={'1','2','3','4','5'};

char y[]={"1","2","3","4","5"};
这种写法本身就是错的

写成一个字符串的形式时会自动加\0

\0是做为结束的标志。比如系统要输出字符串时输出到\0就明白到该地方结束。不然系统会一直无休止地输出下去。

写完字符就加零,没什么好奇怪的,就是这么规定的